--[[ 编码: JX-51-11 名称: 出库单-出库后处理 作者:HAN 日期:2025-1-29 级别:项目 函数: PostProcess 功能: 【配盘】出库完成后,需要检查一下该配盘下面明细中相关的出库单是否可以完成 更改记录: --]] wms_base = require ("wms_base") function PostProcess ( strLuaDEID ) local nRet, strRetInfo local dc_obj = {} nRet, dc_obj = m3.GetSysCurEditDataObj( strLuaDEID, "Distribution_CNTR" ) if (nRet ~= 0) then lua.Error( strLuaDEID, debug.getinfo(1), "获取【配盘】对象属性失败!"..operation_obj ) end if ( dc_obj.dc_no == '' or dc_obj.dc_no == nil ) then return end -- 只有对状态=5(回库)=6(完成)状态的配盘容器进行后处理 local strCondition, strSetAttr if ( dc_obj.b_state == 5 or dc_obj.b_state == 6 ) then if ( dc_obj.bs_type == "Outbound_Wave" ) then strCondition = "F_QTY > (F_ACC_O_QTY + F_ACC_C_QTY) AND S_WAVE_NO = '"..dc_obj.bs_no.."'" nRet, strRetInfo = mobox.getDataObjCount( strLuaDEID, "OW_Detail", strCondition ) if ( nRet ~= 0 ) then lua.Error( strLuaDEID, debug.getinfo(1), "getDataObjCount失败!"..strRetInfo ) end local nCount = lua.StrToNumber( strRetInfo ) if ( nCount == 0 ) then -- 出库波次可以完工 -- N_B_STATE = 4 出库完成 strSetAttr = "N_B_STATE = 4" strCondition = "S_WAVE_NO = '"..dc_obj.bs_no.."'" nRet, strRetInfo = mobox.updateDataAttrByCondition( strLuaDEID, "Outbound_Wave", strCondition, strSetAttr ) if ( nRet ~= 0 ) then lua.Error( strLuaDEID, debug.getinfo(1), "更新【出库波次】状态息失败!"..strRetInfo ) end -- 设置 N_B_STATE = 4 出库单完成 nRet, strRetInfo = mobox.updateDataAttrByCondition( strLuaDEID, "Outbound_Order", strCondition, strSetAttr ) if ( nRet ~= 0 ) then lua.Error( strLuaDEID, debug.getinfo(1), "更新【出库单】状态息失败!"..strRetInfo ) end nRet, strRetInfo = wms_base.OutboundWave_Finish_PostProce( strLuaDEID, dc_obj.bs_no ) if ( nRet ~= 0 ) then lua.Error( strLuaDEID, debug.getinfo(1), "WMS_OutboundWave_Finish_PostProce失败!"..strRetInfo ) end -- 触发出库波次里的【出库单】报完工 WFP strCondition = "S_NO IN ( Select S_OO_NO From TN_OW_Compose with (NOLOCK) Where S_WAVE_NO = '"..dc_obj.bs_no.."')" -- 找出出库波次组成的出库单 local data_objs nRet, data_objs = m3.QueryDataObject(strLuaDEID, "Outbound_Order", strCondition, "S_NO" ) if (nRet ~= 0) then lua.Error( strLuaDEID, debug.getinfo(1),"QueryDataObject失败!"..data_objs ) end if ( data_objs == '' ) then return end local n local obj_attrs local add_wfp = {} for n = 1, #data_objs do obj_attrs = m3.KeyValueAttrsToObjAttr(data_objs[n].attrs) -- 增加一个后台进程进行入库单完工回报 add_wfp = { wfp_type = 1, -- 触发数据对象事件(指定数据对象标识) cls = "出库单", obj_id = data_objs[n].id, obj_name = "出库单号'"..obj_attrs.S_NO.."'-->完工回报", trigger_event = "完工回报" } nRet, strRetInfo = m3.AddSysWFP( strLuaDEID, add_wfp ) if ( nRet ~= 0 ) then lua.Error( strLuaDEID, debug.getinfo(1), "AddSysWFP失败!"..strRetInfo ) end end end end end end